// ======================================================================
// ======================= 核心上报函数 (优化版) ==========================
// ======================================================================

/**
 * 核心的数据打包与上报函数。
 * 当侦测到广告点击时，这个函数会被调用。
 * [已修改] 为不同平台（GA, FB, TT）上报不同的标准事件。
 */
function _report() {
  // console.log("--- [ADS_REPORT] _report() 函数被触发！准备上报广告点击 ---");

  // 尝试从最后被点击的元素（很可能是 iframe）向上查找广告信息
  const activeElement = document.activeElement;
  const ins = activeElement?.parentNode?.parentNode;

  // 如果找不到有效的 <ins> 标签，则中止
  if (!ins || !ins.classList.contains('adsbygoogle')) {
    console.warn('--- [ADS_REPORT] _report() 被调用，但未找到有效的广告标签，已中止上报。---');
    return;
  }

  let contentId = ins.getAttribute('data-ad-slot');
  let contentName = {
    afc: 'banner_top',
    afc2: 'banner',
    afc3: 'popup',
  }[ins.getAttribute('data-ad-ref')];

  // 智能猜测广告类型
  if (!contentId) {
    if (ins.getAttribute('data-anchor-shown')) {
      contentId = contentName = 'anchor';
    } else if (ins.getAttribute('data-slotcar-interstitial')) {
      contentId = contentName = 'afg';
    } else if (ins.getAttribute('data-vignette-loaded')) {
      contentId = contentName = 'vignette';
    } else {
      contentId = contentName = 'auto';
    }
  }

  // ======================================================================
  // ===================== 全新的事件分发逻辑 ============================
  // ======================================================================

  // 模拟转化漏斗，获取点击次数
  const count = Number(sessionStorage.getItem('_trackCount')) + 1;
  sessionStorage.setItem('_trackCount', count);

  let ga_event_name;
  // let fb_event_name;
  let tt_event_name; // 即使TT被注释，也保留逻辑以备将来使用

  switch (count) {
    case 1:
      // --- 第一次点击 ---
      // fb_event_name = 'SubmitApplication'; // FB 标准事件: 提交申请
      ga_event_name = 'generate_lead'; // GA 推荐事件: 潜在客户
      tt_event_name = 'ClickButton';
      break;

    case 2:
      // --- 第二次点击 ---
      // fb_event_name = 'CompleteRegistration'; // FB 标准事件: 完成注册
      ga_event_name = 'sign_up'; // GA 推荐事件: 注册
      tt_event_name = 'CompleteRegistration'; // TT 标准事件: 完成注册
      break;

    default:
      // --- 第三次及以后的点击 ---
      // fb_event_name = 'Purchase'; // FB 标准事件: 购买
      ga_event_name = 'purchase'; // GA 推荐事件: 购买
      tt_event_name = 'CompletePayment'; // TT 标准事件: 完成支付
      break;
  }

  // ======================================================================

  // 构建上报参数
  const params = {
    contents: [
      {
        content_id: contentId,
        content_name: contentName,
        content_type: 'product',
      },
    ],
    value: count, // 价值可以随点击次数递增
    currency: 'USD',
  };

  // 上报给 Google Analytics
  if (window.gtag) {
    // console.log(`--- [ADS_REPORT] GA Event: ${ga_event_name}`, params);
    window.gtag('event', ga_event_name, params);
  } else {
    console.error('--- [ADS_REPORT] 错误：window.gtag 未定义！GA上报失败。---');
  }

  // 上报给 TikTok Pixel (已注释)
  if (window.ttq) {
    // console.log(`--- [ADS_REPORT] TT Event: ${tt_event_name}`, params);
    window.ttq.track(tt_event_name, params);
  } else {
    console.error('--- [ADS_REPORT] 错误：window.ttq 未定义！TT上报失败。---');
  }

  // 上报给 Facebook Pixel
  // if (window.fbq) {
  //   // 为 FB 构建特定的参数结构
  //   const fb_params = {
  //     content_ids: [params.contents[0].content_id],
  //     content_name: params.contents[0].content_name,
  //     value: params.value,
  //     currency: params.currency
  //   };
  //   console.log(`--- [ADS_REPORT] FB Event: ${fb_event_name}`, fb_params);
  //   window.fbq('track', fb_event_name, fb_params);
  // } else {
  //   console.error("--- [ADS_REPORT] 错误：window.fbq 未定义！FB上报失败。---");
  // }

  // console.log("--- [ADS_REPORT] 上报流程执行完毕。 ---");
}

// ======================================================================
// ====================== 启动函数 (最终版) =============================
// ======================================================================

/**
 * 模块的唯一入口和启动函数。
 * 它会设置“三重保险”来捕捉广告点击。
 */
export default function initReport() {
  let mightBeAdClick = false;
  let clickTimeout;

  const handleMouseDown = () => {
    mightBeAdClick = true;
    // console.log("--- [ADS_REPORT] MouseDown 事件被捕获，标记已设置 (mightBeAdClick = true) ---");

    clearTimeout(clickTimeout);
    clickTimeout = setTimeout(() => {
      mightBeAdClick = false;
    }, 500);
  };

  const handleVisibilityChange = () => {
    // console.log(`--- [ADS_REPORT] Visibility 状态改变为: ${document.visibilityState} ---`);
    if (document.visibilityState === 'hidden' && mightBeAdClick) {
      // console.log("--- [ADS_REPORT] 条件满足 (页面隐藏 + 标记为true)，执行上报！ ---");
      _report();
      mightBeAdClick = false;
      clearTimeout(clickTimeout);
    }
  };

  const handleUnload = () => {
    if (document.activeElement && document.activeElement.tagName === 'IFRAME') {
      // console.log("--- [ADS_REPORT] Unload 事件触发，作为最后机会尝试上报！ ---");
      _report();
    }
  };

  window.addEventListener('mousedown', handleMouseDown, true);
  window.addEventListener('visibilitychange', handleVisibilityChange);
  window.addEventListener('beforeunload', handleUnload);

  // console.log("--- [INIT.JS] 最终版 initReport() 已启动，三重保险已设置。 ---");
}
